[アップデート] RetrieveAndGenerate API で Cohere, Meta, Mistral AI のモデルが利用可能になりました

[アップデート] RetrieveAndGenerate API で Cohere, Meta, Mistral AI のモデルが利用可能になりました

Clock Icon2024.09.29

こんにちは!AWS 事業本部コンサルティング部のたかくに(@takakuni_)です。

RetrieveAndGenerate API で Cohere, Meta, Mistral AI のモデルが利用可能になりました。

いつもの日課で RAG を眺めていたら、なんとモデルが増えているではありませんか。

2024-09-29 at 16.59.18-Amazon Bedrock@2x.png

というわけで、今回増えたモデルは以下のとおりです。

  • Cohere
    • Command R
    • Command R+
  • Meta
    • Llama 3.1 8B Instruct
    • Llama 3.1 70B Instruct
    • Llama 3.1 405B Instruct
    • Llama 3.2 11B Vision Instruct(Cross-region inference のみ)
    • Llama 3.2 90B Vision Instruct(Cross-region inference のみ)
  • Mistral AI
    • Mistral Large (24.02)
    • Mistral Large 2 (24.07)

ドキュメントもいずれアップデートされるでしょう。(すでに Meta 3.1 は載っていますが、魚拓をとっておきます。)

2024-09-29 at 16.25.02-Supported regions and models for Amazon Bedrock knowledge bases - Amazon Bedrock@2x.png

https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-supported.html

今まで

今までは AWS 社の Amazon Titan, Anthropic の Claude シリーズのみサポートしていました。

  • Amazon Titan Text Premier
  • Claude Instant v1.2
  • Claude v2.1
  • Claude v2
  • Claude 3 Sonnet
  • Claude 3 Haiku
  • Claude 3.5 Sonnet

つい最近だと、 Cross-region inference や Claude 3.5 Sonnet のサポートがありましたが、今回は Anthropic 以外の 3rd パーティープロバイダーサポートということで衝撃ですね。

https://dev.classmethod.jp/articles/amazon-bedrock-knowledge-bases-cross-region-inference-support/

https://dev.classmethod.jp/articles/amazon-bedrock-knowledge-bases-retrieveandgenerate-api-claude-3-5-sonnet-available/

やってみる

簡単にですが、桃太郎の物語を所有している RAG に対して、各モデルの出力の違いを確認してみます。

index.py
import boto3

KNOWLEDGEBASE_ID = "XXXXXXXX"  # ナレッジベース ID を記載
AWS_ACCOUNT_ID = "1234567891012"  # AWS アカウント ID を記載
bedrock_agent = boto3.client("bedrock-agent-runtime", region_name="us-west-2")


prompt = (
    "桃太郎はどこで生まれましたか?"
)

models = [
    {
        "model_id": "cohere.command-r-v1:0",
        "model_arn": "arn:aws:bedrock:us-west-2::foundation-model/cohere.command-r-v1:0",
    },
    {
        "model_id": "cohere.command-r-plus-v1:0",
        "model_arn": "arn:aws:bedrock:us-west-2::foundation-model/cohere.command-r-plus-v1:0",
    },
    {
        "model_id": "meta.llama3-1-8b-instruct-v1:0",
        "model_arn": "arn:aws:bedrock:us-west-2::foundation-model/meta.llama3-1-8b-instruct-v1:0",
    },
    {
        "model_id": "meta.llama3-1-70b-instruct-v1:0",
        "model_arn": "arn:aws:bedrock:us-west-2::foundation-model/meta.llama3-1-70b-instruct-v1:0",
    },
    {
        "model_id": "meta.llama3-1-405b-instruct-v1:0",
        "model_arn": "arn:aws:bedrock:us-west-2::foundation-model/meta.llama3-1-405b-instruct-v1:0",
    },
    {
        "model_id": "us.meta.llama3-2-11b-instruct-v1:0",
        "model_arn": f"arn:aws:bedrock:us-west-2:{AWS_ACCOUNT_ID}:inference-profile/us.meta.llama3-2-11b-instruct-v1:0",
    },
    {
        "model_id": "us.meta.llama3-2-90b-instruct-v1:0",
        "model_arn": f"arn:aws:bedrock:us-west-2:{AWS_ACCOUNT_ID}:inference-profile/us.meta.llama3-2-90b-instruct-v1:0",
    },
    {
        "model_id": "mistral.mistral-large-2402-v1:0",
        "model_arn": "arn:aws:bedrock:us-west-2::foundation-model/mistral.mistral-large-2402-v1:0",
    },
    {
        "model_id": "mistral.mistral-large-2407-v1:0",
        "model_arn": "arn:aws:bedrock:us-west-2::foundation-model/mistral.mistral-large-2407-v1:0",
    },
]

for model in models:
    model_id = model["model_id"]
    model_arn = model["model_arn"]
    response = bedrock_agent.retrieve_and_generate(
        input={"text": prompt},
        retrieveAndGenerateConfiguration={
            "type": "KNOWLEDGE_BASE",
            "knowledgeBaseConfiguration": {
                "knowledgeBaseId": KNOWLEDGEBASE_ID,
                "modelArn": model_arn,
                "orchestrationConfiguration": {
                    "queryTransformationConfiguration": {"type": "QUERY_DECOMPOSITION"}
                },
            },
        },
    )
    print(f"Model ID: {model_id}")
    print(response["output"]["text"],flush=False)

各種モデルで出力の違いがあり、おもしろいですね。

app % python index.py
Model ID: cohere.command-r-v1:0
桃太郎は日本で生まれました。
Model ID: cohere.command-r-plus-v1:0
桃太郎は桃の中から生まれました。
Model ID: meta.llama3-1-8b-instruct-v1:0
桃太郎は日本で生まれました。
Model ID: meta.llama3-1-70b-instruct-v1:0
桃太郎は桃の中から生まれました。
Model ID: meta.llama3-1-405b-instruct-v1:0
桃の中から生まれました。
Model ID: us.meta.llama3-2-11b-instruct-v1:0
桃太郎は、生まれは明確に記載されていませんが、物語の中でおじいさんとおばあさんが桃太郎を育てていることが記載されています。
Model ID: us.meta.llama3-2-90b-instruct-v1:0
桃太郎は桃の中から生まれました。
Model ID: mistral.mistral-large-2402-v1:0
Momotaro was born from a peach. The peach was found by an old woman while she was doing laundry by the river.
Model ID: mistral.mistral-large-2407-v1:0
桃太郎は桃の中から生まれました。

参考までにモデルの実行ログは Converse API で実行されていました。

{
	"schemaType": "ModelInvocationLog",
	"schemaVersion": "1.0",
	"timestamp": "2024-09-29T08:05:01Z",
	"accountId": "123456789012",
	"identity": {
		"arn": "arn:aws:sts::123456789012:assumed-role/cm-takakuni.shinnosuke/botocore-session-1727597092"
	},
	"region": "us-west-2",
	"requestId": "7f57c30b-cbe9-4abe-b3e7-12698a5ce9a9",
	"operation": "Converse",
	"modelId": "arn:aws:bedrock:us-west-2::foundation-model/cohere.command-r-v1:0",
	"input": {
		"inputContentType": "application/json",
		"inputBodyJson": {
			"messages": [
				{
					"role": "user",
					"content": [
						{
							"text": "桃太郎の出生地"
						}
					]
				}
			],
			"system": [
				{
					"text": "省略"
				}
			],
			"inferenceConfig": {
				"temperature": 0,
				"topP": 1
			}
		},
		"inputTokenCount": 1395
	},
	"output": {
		"outputContentType": "application/json",
		"outputBodyJson": {
			"output": {
				"message": {
					"role": "assistant",
					"content": [
						{
							"text": "<answer>\n<answer_part>\n<text>\n桃太郎は日本の国で生まれました。\n</text>\n<sources>\n<source>4</source>\n</sources>\n</answer_part>\n</answer>"
						}
					]
				}
			},
			"stopReason": "end_turn",
			"metrics": {
				"latencyMs": 799
			},
			"usage": {
				"inputTokens": 1395,
				"outputTokens": 53,
				"totalTokens": 1448
			}
		},
		"outputTokenCount": 53
	}
}

Chat with your Document は対象外

単一のドキュメントで機能する Chat with your document は対象外でした。

こちらも近々サポート期待ですね。

2024-09-29 at 16.52.43-Amazon Bedrock@2x.png

まとめ

以上、速報レベルで簡単にですが「RetrieveAndGenerate API で Cohere, Meta, Mistral AI のモデルが利用可能になりました。」でした。

ナレッジベースでは、回答生成以外のフェーズでも LLM を使うシーンが他にもあるため、モデル別で何か違いがあればまたブログにできればと思います。

このブログがどなたかの参考になれば幸いです。

AWS 事業本部コンサルティング部のたかくに(@takakuni_)でした!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.